洛谷题解 P3955 【图书管理员】 发表于 2018-09-16 | 更新于 2020-03-26 | 阅读次数: 本文字数: 1k | 阅读时长 ≈ 1 分钟 看了下面一堆大佬的代码,感觉好麻烦,其实无需排序直接对每一次询问进行比较就好了(反正数据不大,用不上字符串)。 附代码: 1234567891011121314151617181920212223242526272829303132#include<iostream>using namespace std;int n,q,nl[1001],ql[1001],qsl[1001];/*n为图书馆里书的数量,q为读者的数量,nl是书的编码,ql是询问的编码,qsl是询问的编码的长度*/int main(){ cin>>n>>q;/*输入*/ for(int a=1;a<=n;a++) { cin>>nl[a];/*读入书的编码*/ } for(int a=1;a<=q;a++) { int ans=-1,k=1; cin>>qsl[a];/*读入询问编码的长度*/ cin>>ql[a];/*读入询问的编码*/ for(int c=1;c<=qsl[a];c++)/*处理比较的数位*/ { k=k*10; } for(int b=1;b<=n;b++)/*逐书比较*/ { if(nl[b]%k==ql[a])/*取书的编码的末qsl[a]位与询问编码比较*/ { if(ans==-1||(ans>nl[b]))/*判断是否未找到或是否比已找到的小*/ { ans=nl[b];/*读入已知书编码最小值*/ } } } cout<<ans<<endl;/*输出*/ }} 题目详见:https://www.luogu.org/problemnew/show/P3955